我先透過指令查詢我的設定狀態
$ git config -l | grep ignorecase
core.ignorecase=true
發現我的設定預設為true,也就是不分大小寫
在這個情況下
建立一個bookinfo.txt的檔案
將他commit上去
接著去檔案總管或是其他OS內的檔案管理介面去重新命名這個檔案為BookInfo.txt
這時候去比對差異會發現git並沒有感覺到檔案被重新命名了而要我們將檔案的異動加到stage內
去異動該檔案的內容
發現我們下git status時,也還是把該檔案當作沒被異動大小寫的檔案
$ git status -s
M bookinfo.txt
現在回到檔案還沒重新命名的情況,此時git的設定還是不區分大小寫
嘗試著用原本就應該使用的git mv指令來重新命名
$ git mv bookinfo.txt BookInfo.txt
fatal: destination exists, source=bookinfo.txt, destination=BookInfo.txt
用fource參數也不行
$ git mv -f bookinfo.txt BookInfo.txt
fatal: bad source, source=bookinfo.txt, destination=BookInfo.txt
一樣先建立一個bookinfo.txt的檔案
接著commit上去
再透過OS檔案管理介面來重新命名大小寫
這時add後下git status,會發現git把重新命名的檔案當作一個新的檔案
$ git status -s
?? BookInfo.txt
$ git add .
$ git status -s
A BookInfo.txt
一樣先建立一個bookinfo.txt的檔案
接著commit上去
再透過git mv來重新命名大小寫
$ git mv bookinfo.txt BookInfo.txt
fatal: destination exists, source=bookinfo.txt, destination=BookInfo.txt
若命名後的檔案放在同一個路徑下會發生無法重新命名的情況
因為git mv 認為這是同1個檔案
這時候我是下 -f 參數才可以成功重新命名
命名後用git status指令可以發現他是R(重新命名)
而不是識別為之前的A(新增檔案)
' ' = unmodified
M = modified
A = added
D = deleted
R = renamed
C = copied
U = updated but unmerged
$ git mv -f bookinfo.txt BookInfo.txt
$ git status -s
R bookinfo.txt -> BookInfo.txt
$ git commit -m 'change bookinfo to BookInfo'
這個情況下git就知道現在的BookInfo.txt就是之前的bookinfo.txt